www.gusucode.com > 阵列信号处理书的源码 > MATALB 程序/11.一阶前向预测的DOA估计算法MATLAB程序/lp_doaestimation.m

    % ------- 一阶前向预测算法 -------------------------
%  DOA estimation
% Developed by xiaofei zhang (南京航空航天大学 电子工程系 张小飞)
% EMAIL:zhangxiaofei@nuaa.edu.cn

clear all;
clc;
close all;

wavelength = 1;    % 波长归一化
d = 0.5 * wavelength;     % 阵元间的距离

% ----- 影响分辨力的重要参数 ---
element_num  = 10;        % 阵元数,对分辨率起决定性作用
snapshot_num = 64;       % 快拍数
snr          = 10;        % 单个天线单次快拍信噪比
doa          = [60 80, 90 100];   % 信号方向,这里可以有多个信号

% -------------------
num_s = length(doa);   % 信号数
fd  = linspace(0, 2000, num_s);
prf = 5000;
signal_power = 1;      % 单个信号功率,这里设为等功率,实际上功率差别也会影响分辨力,这里不考虑功率差
step = 0.04;           % 步进值,为了更精细的估计可以调小些

for noTrial = 1:10     % 10次仿真
  % 产生信号
  signal = receive_signal(doa, d, element_num, wavelength, fd, prf, signal_power, snr, snapshot_num);

  X = signal;
  R = X*X'./snapshot_num;         % 计算协方差矩阵
 
  % ------- 一阶前向预测算法 -------------------------
  Xf   = flipud(X(1:element_num-1, :)); 
  Rf   = Xf*Xf'/snapshot_num;
  rf   = Xf*X(element_num, :)'/snapshot_num;
  Wflp = conj((inv(Rf)*rf));

  theta = 0 : step : 180;
  for k = 1 : length(theta);
      a = steering_vector(theta(k), wavelength, d, element_num); 
      Pflp(noTrial, k) = abs(1 ./ (a'*[1;-Wflp]));  % 空间谱
  end

end

Pflpm = mean(Pflp);

%%%%% 画图
figure;
plot(theta, Pflpm);  
grid on;
xlabel('角度(/\circ)');
ylabel('空间谱');
title('DOA estimation');








% -------------------------------------------------------------